home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / program / 615 / cpx_kurs / source / cpx.h next >
Encoding:
C/C++ Source or Header  |  1992-03-05  |  4.9 KB  |  188 lines

  1. /*  CPX.H
  2.  *  Headerdatei zur Erzeugung von CPX-Modulen
  3.  *
  4.  *  aus: Wir basteln uns ein CPX
  5.  *       CPX-Kurs Teil 1
  6.  *       TOS Magazin
  7.  *
  8.  *  (c)1992 by Richard Kurz
  9.  *  Vogelherdbogen 62
  10.  *  7992 Tettnang
  11.  *
  12.  *  Erstellt mit Pure C
  13.  */
  14.  
  15. /* So sieht der Kopf eines CPX-Moduls aus   */
  16. typedef struct
  17. {
  18.     UWORD   magic;
  19.     struct
  20.     {
  21.         unsigned reserved : 13;
  22.         unsigned ram_resident : 1;
  23.         unsigned boot_init : 1;
  24.         unsigned set_only  : 1;
  25.     } flags;
  26.     LONG    cpx_id;
  27.     UWORD   cpx_version;
  28.     char    i_text[14];
  29.     UWORD   icon[48];
  30.     struct
  31.     {
  32.         unsigned i_color :4;
  33.         unsigned reserved : 4;
  34.         unsigned i_char : 8;
  35.     } i_info;
  36.     char    text[18];
  37.     struct
  38.     {
  39.         unsigned c_board : 4;
  40.         unsigned c_text : 4;
  41.         unsigned pattern : 4;
  42.         unsigned c_back : 4;
  43.     } t_info;
  44.     char    buffer[64];
  45.     char    reserved[306];
  46. }   CPXHEAD;
  47.  
  48. /* Mausparameter                                */
  49. typedef struct
  50. {
  51.     WORD x;
  52.     WORD y;
  53.     WORD buttons;
  54.     WORD kstate;
  55. } MRETS;
  56.  
  57. /* Struktur zur Verwaltung von CPX-Modulen      */
  58. typedef struct cpxlist
  59. {
  60.         char f_name[14];
  61.         WORD head_ok;
  62.         WORD segm_ok;
  63.         struct
  64.         {
  65.                 void *text_seg;
  66.                 long len_text;
  67.                 void *data_seg;
  68.                 long len_data;
  69.                 void *bss_seg;
  70.                 long len_bss;
  71.         } *segm;
  72.         struct cpxlist *next;
  73.         CPXHEAD header;
  74. } CPX_LIST;
  75.  
  76. /* Funktionen und Flags die von XControl zur Verfügung  */
  77. /* gestellt werden.                                     */
  78. typedef struct
  79. {
  80.     WORD    handle;
  81.     WORD    booting;
  82.     WORD    reserved;
  83.     WORD    SkipRshFix;
  84.  
  85.     CPX_LIST *  cdecl (*get_cpx_list)(void);
  86.     WORD cdecl  (*save_header)(CPX_LIST *header);
  87.  
  88.     void cdecl  (*rsh_fix)(WORD num_objs,WORD num_frstr,
  89.                     WORD num_frimg, WORD num_tree,
  90.                     OBJECT *rs_object, TEDINFO *rs_tedinfo,
  91.                     char *rs_strings[], ICONBLK *rs_iconblk,
  92.                     BITBLK *rs_bitblk, long *rs_frstr,
  93.                     long *rs_frimg, long *rs_trindex,
  94.                     struct foobar *rs_imdope);
  95.  
  96.     void cdecl  (*rsh_obfix)(OBJECT *tree, WORD ob);
  97.  
  98.     WORD cdecl  (*Popup)(char *items[],WORD num,
  99.                 WORD def_item,WORD font,
  100.                 GRECT *up, GRECT *world);
  101.  
  102.     void cdecl  (*Sl_size)(OBJECT *tree, WORD base,
  103.                 WORD slider, WORD entrys, WORD vis_ent,
  104.                 WORD hvflag, WORD min_pix);
  105.  
  106.     void cdecl  (*Sl_x)(OBJECT *tree, WORD base, WORD slider,
  107.                 WORD value, WORD min, WORD max,
  108.                 void (*foo)(void));
  109.  
  110.     void cdecl  (*Sl_y)(OBJECT *tree, WORD base, WORD slider,
  111.                 WORD value, WORD min, WORD max,
  112.                 void (*foo)(void));
  113.  
  114.     void cdecl  (*Sl_arrow)(OBJECT *tree, WORD base,
  115.                 WORD slider, WORD obj, WORD inc, WORD min,
  116.                 WORD max, WORD *value, WORD hvflag,
  117.                 void (*foo)(void));
  118.  
  119.     void cdecl  (*Sl_dragx)(OBJECT *tree, WORD base,
  120.                 WORD slider, WORD min, WORD max,
  121.                 WORD *value, void (*foo)(void));
  122.  
  123.     void cdecl  (*Sl_dragy)(OBJECT *tree, WORD base,
  124.                 WORD slider, WORD min, WORD max,
  125.                 WORD *value, void (*foo)(void));
  126.  
  127.     WORD cdecl  (*Xform_do)(OBJECT *tree,WORD eobj,
  128.                 WORD *msg);
  129.  
  130.     GRECT * cdecl   (*GetFirstRect)(GRECT *prect);
  131.  
  132.     GRECT * cdecl   (*GetNextRect)(void);
  133.  
  134.     void cdecl  (*Set_Evnt_Mask)(WORD mask, MOBLK *m1,
  135.                 MOBLK *m2, long time);
  136.  
  137.     WORD cdecl  (*XGen_Alert)(WORD al);
  138.  
  139.     WORD cdecl  (*CPX_Save)(void *ptr, long bytes);
  140.  
  141.     void * cdecl    (*Get_Buffer)(void);
  142.  
  143.     WORD cdecl  (*getcookie)(long cookie, long *p_value);
  144.  
  145.     WORD        Country_Code;
  146.  
  147.     void cdecl  (*MFsave)(WORD flag, MFORM *mf);
  148.  
  149. } XCPB;
  150.  
  151. /* Funktionen die vom CPX-Modul zur Verfügung   */
  152. /* gestellt werden.                             */
  153. typedef struct
  154. {
  155.     WORD cdecl  (*cpx_call)(GRECT *rect);
  156.  
  157.     void cdecl  (*cpx_draw)(GRECT *clip);
  158.  
  159.     void cdecl  (*cpx_wmove)(GRECT *work);
  160.  
  161.     void cdecl  (*cpx_timer)(WORD *quit);
  162.  
  163.     void cdecl  (*cpx_key)(WORD kstate, WORD key, WORD *quit);
  164.  
  165.     void cdecl  (*cpx_button)(MRETS *mrets, WORD nclicks,
  166.                  WORD *quit);
  167.  
  168.     void cdecl  (*cpx_m1)(MRETS *mrets, WORD *quit);
  169.  
  170.     void cdecl  (*cpx_m2)(MRETS *mrets, WORD *quit);
  171.  
  172.     WORD cdecl  (*cpx_hook)(WORD event, WORD *msg, 
  173.                 MRETS *mrets, WORD *key, WORD *nclicks);
  174.  
  175.     void cdecl  (*cpx_close)(WORD flag);
  176. } CPXINFO;
  177.  
  178. /* Nützliche Definitionen               */
  179. #define SAVE_DEFAULTS   0
  180. #define MEM_ERR         1
  181. #define FILE_ERR        2
  182. #define FILE_NOT_FOUND  3
  183.  
  184. #define MFSAVE      1
  185. #define MFRESTORE   0
  186.  
  187. #define CT_KEY  53
  188.